package nespresso.servlets;

import java.io.IOException;
import java.util.Enumeration;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.*;

import nespresso.beans.*;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;


public class CommandereglerServlet extends HttpServlet {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private Log log; 
	
    public CommandereglerServlet() {
    	log = LogFactory.getLog(CommandereglerServlet.class);
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		/*
		 * si l'utilisateur tape l'adresse de la servlet directement dans la barre d'adresse, il est renvoyé 
		 * sur la page d'accueil !
		 */
		response.sendRedirect("nespresso.jsp");
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		HttpSession session = request.getSession(); // On récupère la session en cours
		request.setCharacterEncoding("UTF-8");
		Commande c = (Commande)session.getAttribute("commande");
		User currentUser = (User)session.getAttribute("user");
		Enumeration params = request.getParameterNames();
		String paramName = new String();
		String action = new String();
		String nuuser = new String(currentUser.getId());
		while(params.hasMoreElements()) { 
			paramName = (String)params.nextElement();
    		if(paramName.startsWith("V")) {  // On est passé par la "coche"
    			nuuser = paramName.substring(1, 6);
    			action = "Valider";
    		}
    		if(paramName.equals("pRegler") || paramName.equals("pRetour")) action = request.getParameter(paramName); // On est passé par le bouton "Régler" ou "Retour"
    		System.out.println(paramName + " => " + request.getParameter(paramName));
		}
		if(action.equals("Retour")) {
			request.getRequestDispatcher("lignescommande.jsp").forward(request, response);
		} else
			if(action.equals("Régler")) {
				// on envoie un mail au responsable de la commande
				Base bu = new Base();
				bu.GetResultat("USERS", "ID", c.GetUserresp()); bu.Suivant();
				User to = new User(bu.GetTexte("ID"), bu.GetTexte("NOM"), bu.GetTexte("PRENOM"), bu.GetTexte("ROLE"), bu.GetTexte("LOGIN"), bu.GetTexte("EMAIL"), null);
				bu.Free();
				new EnvoiMail(currentUser, to, "REGLEMENT"+c.GetId());
				Base bp = new Base();
				if(bp.UpdatePaiement(c, currentUser, "EN ATTENTE")) log.info("Réglement du user "+currentUser.getId()+" pour la commande "+c.GetId()+" enregistré avec succés !");
				else log.info("Le réglement du user "+currentUser.getId()+" pour la commande "+c.GetId()+" n'a pas été enregistré !");
				request.getRequestDispatcher("lignescommande.jsp").forward(request, response);
			}
			if(action.equals("Valider")) { // On change le statut du paiement destiné à être validé
				Base bpai = new Base();
				User upai = new User(); upai.setId(nuuser);
				bpai.UpdatePaiement(c, upai, "PAYÉ");
				bpai.Free();
				Base bu = new Base();
				bu.GetResultat("USERS", "ID", nuuser); bu.Suivant();
				User to = new User(bu.GetTexte("ID"), bu.GetTexte("NOM"), bu.GetTexte("PRENOM"), bu.GetTexte("ROLE"), bu.GetTexte("LOGIN"), bu.GetTexte("EMAIL"), null);
				bu.Free();
				new EnvoiMail(currentUser, to, "VALIDREGLEMENT"+c.GetId());
				request.getRequestDispatcher("reglercommande.jsp").forward(request, response);
			}
	}
}
